﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 抽象类的简单介绍
{
    class Program
    {
        static void Main(string[] args)
        {
            //Animal 父类  Eat() Bark()
            //Cat 猫咪 Eat()  Bark() 舔着吃  喵猫叫
            //Dog 狗   Eat()  Bark() 牙咬着吃  旺旺叫



            //抽象类：我们使用面向对象的思想，其实就是把类当中的成员进一步的向上提取封装。
            //有的时候，我们发现子类在实现某些相同功能的时候，实现的方式各不一样，
            //这个时候，我们可以考虑将这种成员，在父类中标记成抽象的.
            //具体怎么实现 由子类自己去重写。
            //Animal a = new Dog();//new Cat();
            //a.Bark();
            //Console.ReadKey();


            //员工：员工需要九点打卡  虚方法
            //经理：经理11点卡
            //程序猿类：九点打卡

            //子类可以选择性的进行重写 也就是

        }
    }

    abstract class Animal
    {

        public abstract void Bark();
    }

    class Cat : Animal
    {
        public override void Bark()
        {
            Console.WriteLine("猫咪喵喵的叫");
        }
    }

    class Dog : Animal
    {
        public override void Bark()
        {
            Console.WriteLine("狗狗旺旺的叫");
        }
    }

}
